package com.qf.taobei.service;

import com.qf.taobei.entity.*;
import com.qf.taobei.entity.vo.ViewProduct;
import com.qf.taobei.entity.vo.ViewProductType;
import com.qf.taobei.entity.vo.ProductVo2;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@SuppressWarnings("all")

public interface ProductService {
    /**
     * 获取所有商品
     * @return
     */
    RespBean queryAllProduct();

    /**
     * 获取单个商品信息(后端使用)
     * @param id
     * @return
     */
    RespBean queryProductByIdForAfter(Integer id);


    /**
     * 获取单个商品信息(前端使用)
     * @param id
     * @return
     */
    RespBean queryProductByIdForFront(Integer id);

    /**
     * 添加商品
     * @param product
     * @return
     */
    RespBean addProduct(Product product, HttpServletRequest request);

    /**
     * 根据 ID 修改商品
     * @return
     */
    RespBean updateProductById(Product product);

    /**
     * 根据 ID 删除商品
     * @return
     */
    RespBean delProductById(Long id);


    /**
     * 根据 ID 批量删除商品
     * @return
     */
    RespBean delProductByIdList(List idList);

    /**
     * 添加图片
     * @param file
     * @param request
     * @return
     */
    RespBean upload(MultipartFile[] file, HttpServletRequest request);

    /**
     * 模糊查找
     * @param dim
     * @return
     */
    RespBean queryProductByDim(Dim dim);


    /**
     * 根据商品ID查找相关的图片
     * @param id
     * @return
     */
    RespBean queryPictureByProductId(Integer id);

    /**
     * 根据类别父ID查询商品
     * @param id
     * @return
     */
    RespBean queryProductByParentId(Integer parentId);

    /**
     * 根据商品状态查询所有商品
     * @param flag
     * @return
     */
    RespBean getProductListByFlag(String flag);

    /**
     * 修改商品状态
     * @param flag
     * @return
     */
    RespBean updateProductFlag(Integer id,Integer flag);

    /**
     * 根据店铺ID查询归属该店铺的商品
     * @param storeId
     * @return
     */
    RespBean queryProductByStoreId(HttpServletRequest request);

    List<ViewProductType> queryProductByProductTypeId(int id);

    //查询同一个父级分类的商品
    List<ViewProduct> getProductByParentId(int parentId);

    //根据商品类型ID查询商品类型信息
    ViewProductType qeuryProductById(Integer id);
}
